49#define WOLF_SOLVER_CREATE(SolverClass) \
50 static SolverManagerPtr create(const ProblemPtr& _problem, \
51 const YAML::Node& _input_node, \
52 const std::vector<std::string>& _folders_schema = {}) \
54 if (not _folders_schema.empty()) \
56 auto server = yaml_schema_cpp::YamlServer(_folders_schema); \
57 server.setYaml(_input_node); \
58 if (not server.applySchema(#SolverClass)) \
60 WOLF_ERROR(server.getLog()); \
63 return std::shared_ptr<SolverClass>(new SolverClass(_problem, server.getNode())); \
65 return std::shared_ptr<SolverClass>(new SolverClass(_problem, _input_node)); \
67 static SolverManagerPtr create(const ProblemPtr& _problem, \
68 const std::string& _yaml_filepath, \
69 const std::vector<std::string>& _folders_schema) \
71 auto server = yaml_schema_cpp::YamlServer(_folders_schema, _yaml_filepath); \
72 if (not server.applySchema(#SolverClass)) \
74 WOLF_ERROR(server.getLog()); \
77 return create(_problem, server.getNode(), {}); \
96 GAUSS_TUCAN_ONLY_POSITION = 5
122 std::thread solver_thread_;
132 SolverManager(
const ProblemPtr& _problem,
const YAML::Node& _params);
134 static SolverManagerPtr
autoSetup(
const ProblemPtr& _problem,
135 const std::string& _input_yaml_file,
136 std::vector<std::string> _primary_schema_folders,
137 bool _skip_yaml_validation =
false);
139 static SolverManagerPtr
autoSetup(
const ProblemPtr& _problem,
140 YAML::Node _param_node,
141 std::vector<std::string> _primary_schema_folders,
142 bool _skip_yaml_validation =
false);
187 const LocalParametrizationBasePtr& local_param) const final;
203 virtual
bool check(
std::
string prefix = "") const final;
217 virtual
void addFactor(const FactorBasePtr& fac_ptr) final;
218 virtual
void removeFactor(const FactorBasePtr& fac_ptr) final;
219 virtual
void addStateBlock(const StateBlockPtr& state_ptr) final;
220 virtual
void removeStateBlock(const StateBlockPtr& state_ptr) final;
221 virtual
void updateStateBlockState(const StateBlockPtr& state_ptr) final;
222 virtual
void updateStateBlockStatus(const StateBlockPtr& state_ptr) final;
223 virtual
void updateStateBlockLocalParametrization(const StateBlockPtr& state_ptr) final;
243 const LocalParametrizationBasePtr& local_param) const = 0;
257 virtual
void run() final;
258 virtual
void stop() final;
Definition: profiling_unit.h:30
Solver manager for WOLF.
Definition: solver_manager.h:84
virtual int numStateBlocksEstimated() const final
Definition: solver_manager.cpp:608
ProfilingUnit profiling_cov_
Definition: solver_manager.h:118
virtual bool hasLocalParametrization(const StateBlockPtr &st) const final
Definition: solver_manager.cpp:573
ProblemPtr wolf_problem_
Definition: solver_manager.h:117
virtual void stop() final
Definition: solver_manager.cpp:655
ProfilingUnit profiling_total_
Definition: solver_manager.h:118
virtual int sizeFactorsDerived() const =0
virtual void updateStateBlockStatusDerived(const StateBlockPtr &state_ptr)=0
virtual int sizeStateBlocksEstimatedDerived() const =0
CovarianceBlocksToBeComputed
Enumeration of covariance blocks to be computed.
Definition: solver_manager.h:89
virtual bool isFactorRegisteredDerived(const FactorBasePtr &fac_ptr) const =0
std::set< StateBlockPtr > floating_state_blocks_
Definition: solver_manager.h:209
virtual Eigen::VectorXd & getAssociatedMemBlock(const StateBlockPtr &state_ptr)
Definition: solver_manager.cpp:497
ProfilingUnit profiling_state_
Definition: solver_manager.h:118
ProfilingUnit profiling_update_
Definition: solver_manager.h:118
virtual bool check(std::string prefix="") const final
Definition: solver_manager.cpp:718
YAML::Node getParams() const
Definition: solver_manager.cpp:624
virtual double initialCost() const =0
ReportVerbosity getVerbosity() const
Definition: solver_manager.cpp:533
virtual void run() final
Definition: solver_manager.cpp:644
std::chrono::high_resolution_clock::time_point last_cov_time_
Definition: solver_manager.h:270
const double * getAssociatedMemBlockPtr(const StateBlockPtr &state_ptr) const
Definition: solver_manager.cpp:509
std::map< StateBlockPtr, FactorBasePtrList > state_blocks_2_factors_
Definition: solver_manager.h:207
virtual void updateStateBlockLocalParametrizationDerived(const StateBlockPtr &state_ptr)=0
virtual double finalCost() const =0
virtual bool checkDerived(std::string prefix="") const =0
double getPeriod() const
Definition: solver_manager.cpp:629
CovarianceBlocksToBeComputed cov_enum_
Definition: solver_manager.h:268
virtual int sizeFactors() const final
Definition: solver_manager.cpp:587
bool compute_cov_
Definition: solver_manager.h:267
virtual unsigned int iterations() const =0
static SolverManagerPtr autoSetup(const ProblemPtr &_problem, const std::string &_input_yaml_file, std::vector< std::string > _primary_schema_folders, bool _skip_yaml_validation=false)
Definition: solver_manager.cpp:50
double getCovPeriod() const
Definition: solver_manager.cpp:634
virtual int numFactors() const final
Definition: solver_manager.cpp:582
virtual int numStateBlocks() const final
Definition: solver_manager.cpp:594
virtual int sizeStateBlocksEstimated() const final
Definition: solver_manager.cpp:616
const ProfilingUnit & getProfilingUpdate() const
Definition: solver_manager.cpp:873
const ProfilingUnit & getProfilingTotal() const
Definition: solver_manager.cpp:863
virtual bool hasLocalParametrizationDerived(const StateBlockPtr &st) const =0
bool stopping_
Definition: solver_manager.h:271
virtual void addStateBlockDerived(const StateBlockPtr &state_ptr)=0
virtual int numFactorsDerived() const =0
virtual bool failed() const =0
const ProfilingUnit & getProfilingCov() const
Definition: solver_manager.cpp:883
SolverManager(const ProblemPtr &_problem)
Constructor with default params_.
virtual bool computeCovariances() final
Definition: solver_manager.cpp:271
std::map< StateBlockPtr, Eigen::VectorXd > state_blocks_
Definition: solver_manager.h:206
virtual bool hasThisLocalParametrizationDerived(const StateBlockPtr &st, const LocalParametrizationBasePtr &local_param) const =0
virtual bool isStateBlockRegistered(const StateBlockPtr &state_ptr) const final
Definition: solver_manager.cpp:538
virtual bool isStateBlockFixedDerived(const StateBlockPtr &st) const =0
YAML::Node params_
Definition: solver_manager.h:119
bool getComputeCov() const
Definition: solver_manager.cpp:639
std::string solve()
Solves with the verbosity defined in params_.
Definition: solver_manager.cpp:229
virtual int sizeStateBlocks() const final
Definition: solver_manager.cpp:599
virtual double totalTime() const =0
ProblemPtr getProblem()
Definition: solver_manager.cpp:224
virtual bool isStateBlockFixed(const StateBlockPtr &st) const final
Definition: solver_manager.cpp:554
double cov_period_
Definition: solver_manager.h:269
virtual bool isFactorRegistered(const FactorBasePtr &fac_ptr) const final
Definition: solver_manager.cpp:549
virtual bool isStateBlockRegisteredDerived(const StateBlockPtr &state_ptr) const =0
const ProfilingUnit & getProfilingSolve() const
Definition: solver_manager.cpp:868
virtual void removeStateBlockDerived(const StateBlockPtr &state_ptr)=0
ProfilingUnit profiling_solve_
Definition: solver_manager.h:118
virtual void update()
Updates solver's problem according to the wolf_problem.
Definition: solver_manager.cpp:121
void printProfiling(std::ostream &stream=std::cout) const
Definition: solver_manager.cpp:888
virtual int numStateBlocksEstimatedDerived() const =0
ReportVerbosity verbose_
Definition: solver_manager.h:266
virtual bool isStateBlockFloating(const StateBlockPtr &state_ptr) const final
Definition: solver_manager.cpp:544
virtual void printProfilingDerived(std::ostream &stream=std::cout) const =0
virtual ~SolverManager()
Definition: solver_manager.cpp:48
std::set< FactorBasePtr > factors_
Definition: solver_manager.h:208
virtual bool hasThisLocalParametrization(const StateBlockPtr &st, const LocalParametrizationBasePtr &local_param) const final
Definition: solver_manager.cpp:563
virtual bool computeCovariancesDerived(const CovarianceBlocksToBeComputed blocks)=0
virtual bool converged() const =0
virtual bool wasStopped() const =0
virtual void addFactorDerived(const FactorBasePtr &fac_ptr)=0
double period_
Definition: solver_manager.h:265
virtual std::string solveDerived(const ReportVerbosity report_level)=0
virtual void removeFactorDerived(const FactorBasePtr &fac_ptr)=0
const ProfilingUnit & getProfilingState() const
Definition: solver_manager.cpp:878
ReportVerbosity
Enumeration for the verbosity of the solver report.
Definition: solver_manager.h:102
Namespace extending Eigen definitions.
Definition: wolf.h:94
Definition: composite.h:225
Definition: capture_base.h:23
WOLF_PTR_TYPEDEFS(CaptureLandmarksExternal)